home *** CD-ROM | disk | FTP | other *** search
/ Aminet 41 / Aminet 41 (2001)(Schatztruhe)[!][Feb 2001].iso / Aminet / util / cli / ALeXcompare.lha / cmp / update2.rexx < prev   
OS/2 REXX Batch file  |  2000-11-18  |  4KB  |  138 lines

  1. /*
  2. ** Update only all neccesary files from dir A -> dir B
  3. **                 ©1999/2000 ALeX Kazik
  4. */
  5.  
  6. /* Usage as FTP/WWW-Updater:  (turn on makeftp)
  7. **
  8. **   dst shoud be an image of your ftp-tree (initial: empty)
  9. **   src is the directory, you should make changes
  10. **
  11. **   every call will send/delete all created/changed/removed files/dirs on the
  12. **   ftp-server and in the dst-directory.
  13. **
  14. **   at least just call "ftp -iv www.homepage.net <T:script"
  15. **    (the call will change, if you're using anothther ftp-clients)
  16. */
  17.  
  18. /* IMPORTANT: the src/dst dir MUST end with a colon or slash and MUST NOT be empty! */
  19.  
  20. /* SOURCE directory */
  21. src = 'a/'
  22.  
  23. /* DESTINATION directory */
  24. dst = 'b/'
  25.  
  26. /* generate as CLI or FTP-Script */
  27. makeftp = 0
  28.  
  29. /* use UNIX cp/rm/mkdir commands instead of copy/delete/makedir */
  30. unixcmd = 0
  31.  
  32. /* the script to create */
  33. script = 'T:script'
  34.  
  35. /* SKIP the first N bytes */
  36. skip = 0
  37.  
  38. /* temporary file */
  39. tmpfile = 'T:update.tmp'
  40.  
  41. /*
  42. ** The main-program
  43. */
  44.  
  45. ADDRESS COMMAND
  46.  
  47. IF makeftp = 1 THEN
  48.    ftpsign = '!'
  49. ELSE
  50.    ftpsign = ''
  51.  
  52. cmp 'A="' || src || '" B="' || dst || '" all nostat norc skipfirstnbytes=' || skip || ' newdir=10 newfile revbdir detail lformat %r%R%n >"' || tmpfile || '"'
  53. IF RC >= 20 THEN DO
  54.     SAY 'Error while executing cmp'
  55.     EXIT RC
  56. END
  57.  
  58. CALL OPEN(tmp, tmpfile, 'read')
  59. CALL OPEN(scr, script, 'write')
  60.  
  61. eq = 0
  62.  
  63. DO UNTIL EOF(tmp)
  64.   act = READCH(tmp, 1)
  65.   file = READLN(tmp)
  66.   IF act = '' THEN
  67.     break
  68.   ELSE IF act = 'Q' THEN
  69.     eq = eq + 1
  70.   ELSE IF (act = 'A') | (act = '5') | (act = '9') THEN DO
  71.     say 'File to remove: ' || file
  72.     IF makeftp=1 THEN
  73.       CALL WRITELN(scr, 'del "' || file || '"')
  74.     IF unixcmd=1 THEN
  75.       CALL WRITELN(scr, ftpsign || 'rm "' || dst || file || '"')
  76.     ELSE
  77.       CALL WRITELN(scr, ftpsign || 'delete "' || dst || file || '"')
  78.   END
  79.   ELSE IF (act = '4') | (act = '8') THEN DO
  80.     say 'Dir to remove: ' || file
  81.     IF makeftp=1 THEN
  82.       CALL WRITELN(scr, 'rmdir "' || file || '"')
  83.     IF unixcmd=1 THEN
  84.       CALL WRITELN(scr, ftpsign || 'rmdir "' || dst || file || '"')
  85.     ELSE
  86.       CALL WRITELN(scr, ftpsign || 'delete "' || dst || file || '"')
  87.   END
  88.   ELSE IF (act = 'B') | (act = '3') | (act = '7') THEN DO
  89.     say 'New File: ' || file
  90.     IF makeftp=1 THEN
  91.       CALL WRITELN(scr, 'put "' || src || file || '" "' || file || '"')
  92.     IF unixcmd=1 THEN
  93.       CALL WRITELN(scr, ftpsign || 'cp "' || src || file || '" "' || dst || file || '"')
  94.     ELSE
  95.       CALL WRITELN(scr, ftpsign || 'copy "' || src || file || '" "' || dst || file || '"')
  96.   END
  97.   ELSE IF (act = '2') | (act = '6') THEN DO
  98.     say 'New Dir: ' || file
  99.     IF makeftp=1 THEN
  100.       CALL WRITELN(scr, 'mkdir "' || file || '"')
  101.     IF unixcmd=1 THEN
  102.       CALL WRITELN(scr, ftpsign || 'mkdir "' || dst || file || '"')
  103.     ELSE
  104.       CALL WRITELN(scr, ftpsign || 'makedir "' || dst || file || '"')
  105.   END
  106.   ELSE IF (act = 'E') | (act = '0') | (act = '1') THEN DO
  107.     say 'Error/Warning at dir/file: ' || file
  108.     exit 20
  109.   END
  110.   ELSE IF (act = 'L') | (act = 'C') | (act = 'D') | (act = 'S') | (act = 'T') THEN DO
  111.     say 'File to Update: ' || file
  112.     IF makeftp=1 THEN
  113.       CALL WRITELN(scr, 'put "' || src || file || '" "' || file || '"')
  114.     IF unixcmd=1 THEN
  115.       CALL WRITELN(scr, ftpsign || 'cp "' || src || file || '" "' || dst || file || '"')
  116.     ELSE
  117.       CALL WRITELN(scr, ftpsign || 'copy "' || src || file || '" "' || dst || file || '"')
  118.   END
  119.   ELSE DO
  120.     SAY 'Unknown Symbol >' || act || '<'
  121.     CALL close(tmp)
  122.     CALL close(scr)
  123.     EXIT 20
  124.   END
  125. END
  126.  
  127. SAY eq || ' Equal files.'
  128.  
  129. IF makeftp=1 THEN
  130.   CALL WRITELN(scr, 'by')
  131.  
  132. CALL CLOSE(tmp)
  133. CALL CLOSE(scr)
  134.  
  135. /*
  136. ** That's all.
  137. */
  138.